﻿namespace blacksoft.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;

    public partial class Personal
    {
        public Personal()
        {
            this.Incidente = new HashSet<Incidente>();
            this.OrdenCompra = new HashSet<OrdenCompra>();
            this.OrdenMantenimiento = new HashSet<OrdenMantenimiento>();
            this.Pasaje = new HashSet<Pasaje>();
            this.Usuario = new HashSet<Usuario>();
            this.ProgramacionViaje_x_Personal = new HashSet<ProgramacionViaje_x_Personal>();
            this.Reserva = new HashSet<Reserva>();
            this.Venta = new HashSet<Venta>();
            this.Producto_x_Proveedor = new HashSet<Producto_x_Proveedor>();
        }

        public int IDPersona { get; set; }

        [Display(Name = "D.N.I.")]
        [Required]
        [RegularExpression(@"^[0-9]{8}", ErrorMessage = "El D.N.I. debe constar de 8 dígitos.")]
        public string DNI { get; set; }

        [Display(Name = "Nombre")]
        [Required]
        [RegularExpression(@"^[^0-9]*", ErrorMessage = "El nombre no puede contener números.")]
        [StringLength(60)]
        public string Nombre { get; set; }

        [Display(Name = "Apellido Paterno")]
        [Required]
        [RegularExpression(@"^[^0-9]*", ErrorMessage = "El apellido paterno no puede contener números.")]
        [StringLength(60)]
        public string ApellidoPaterno { get; set; }

        [Display(Name = "Apellido Materno")]
        [Required]
        [RegularExpression(@"^[^0-9]*", ErrorMessage = "El apellido materno no puede contener números.")]
        [StringLength(60)]
        public string ApellidoMaterno { get; set; }

        [Display(Name = "Fecha de Nacimiento")]
        [Required]
        [DataType(DataType.Date)]
        public Nullable<System.DateTime> FechaNacimiento { get; set; }

        [Display(Name = "Dirección")]
        [Required]
        [StringLength(150)]
        public string Direccion { get; set; }

        [Display(Name = "Teléfono")]
        [RegularExpression(@"^[0-9]{6,7}", ErrorMessage = "El teléfono debe constar de 6 a 7 dígitos.")]
        public Nullable<int> Telefono { get; set; }

        [Display(Name = "Celular")]
        [RegularExpression(@"^[0-9]{9}", ErrorMessage = "El celular debe constar de 9 dígitos.")]
        public Nullable<int> Celular { get; set; }
        [Required]
        [Display(Name = "E-mail")]
        [DataType(DataType.EmailAddress)]
        public string Email { get; set; }

        [Display(Name = "Cargo")]
        [Required]
        public string CargoPersonal { get; set; }

        [Display(Name = "Estado")]
        [Required]
        public string Estado { get; set; }

        [Display(Name = "Tipo")]
        public Nullable<int> TipoPersona { get; set; }

        [Display(Name = "Fecha de Registro")]
        [DataType(DataType.Date)]
        public Nullable<System.DateTime> FechaRegistro { get; set; }

        [Display(Name = "Terminal")]
        [Required]
        public Nullable<int> IDTerminal { get; set; }

        [Display(Name = "Unidad de Venta")]
        public Nullable<int> IDUnidadVenta { get; set; }


        public virtual ICollection<Incidente> Incidente { get; set; }
        public virtual ICollection<OrdenCompra> OrdenCompra { get; set; }
        public virtual ICollection<OrdenMantenimiento> OrdenMantenimiento { get; set; }
        public virtual ICollection<Pasaje> Pasaje { get; set; }
        public virtual ICollection<Usuario> Usuario { get; set; }
        public virtual ICollection<ProgramacionViaje_x_Personal> ProgramacionViaje_x_Personal { get; set; }
        public virtual ICollection<Reserva> Reserva { get; set; }

        [Display(Name = "Terminal")]
        public virtual Terminal Terminal { get; set; }
        public virtual ICollection<Venta> Venta { get; set; }

        [Display(Name = "Unidad de Venta")]
        public virtual UnidadVenta UnidadVenta { get; set; }
        public virtual ICollection<Producto_x_Proveedor> Producto_x_Proveedor { get; set; }
    }
}
